package club.justwill.single.Service;

import club.justwill.single.bean.AddAgreement;
import club.justwill.single.bean.AddSKu;
import club.justwill.single.bean.CreateProject;
import club.justwill.single.bean.SearchProjects;
import club.justwill.single.bean.Stick.DiscussProject;
import club.justwill.single.bean.Stick.ReplyDiscuss;
import club.justwill.single.bean.*;
import club.justwill.single.model.JsonResponse;
import club.justwill.single.model.SecurityToken;
import club.justwill.single.persistence.document.ProjectHits;
import club.justwill.single.persistence.document.ProjectSupport;
import club.justwill.single.persistence.document.Stick;
import club.justwill.single.persistence.jpo.Projects;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.util.List;

/**
 * Created by xiangnan on 15-12-26.
 */
public interface ProjectsService {
    public List<Projects> searchProjects(SearchProjects searchProjects, JsonResponse obj);
    public Projects addProjects(SecurityToken token, CreateProject createProject, JsonResponse obj);
    public void addAggrement(SecurityToken token, AddAgreement addAgreement, JsonResponse obj);
    public Long addSKus(SecurityToken token, AddSKu addSKu, JsonResponse obj);
    public void saveFile(SecurityToken token, JsonResponse obj, CommonsMultipartFile cover, Long projectId);

    public List<Stick> searchProjectStick(long projectId);
    public Stick discuss(SecurityToken token, JsonResponse obj, DiscussProject discussProject);
    public Stick replyDiscuss(SecurityToken token, JsonResponse obj, ReplyDiscuss replyDiscuss);
    public ProjectSupport searchSupportInfo(long projectId, JsonResponse obj);
    public ProjectsResp getProjectById(SecurityToken token, long projectId, JsonResponse obj);

    public List<ProjectsResp> getProjectByTagAndStatus(SecurityToken token, JsonResponse obj, GetProjectByTS getProjectByTS);

    public void updateProject(SecurityToken token, CreateProject updateProject, long projectId, JsonResponse obj);

    public ProjectHits getProjectHits(JsonResponse obj, Long projectId);
    public void addProjectsHits(JsonResponse obj, Long projectId);
    public void updateSKus(SecurityToken token, UpdateSku sku, JsonResponse obj);
}
